#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QPushButton>
#include <QDate>
#include <QTime>
#include <QDateTime>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 1.基础类型
    // 1)数字型
//    qint16 a = 30000;
//    quint8 b = 255;
//    // qintptr c = 430000000;
//    qreal d = 3.1415;
//    qDebug() << a << " " << b << " " << d;

    // 2)位置和尺寸
    // 点
//    QPoint p1 = {30, 50};

//    QPushButton* btn1 = new QPushButton("btn1", this);
//    btn1->move(p1);
//    this->move(p1);

//    QPoint p2(100, 200);

    // 线
//    QLine l1(p1, p2);
//    QLine l2(50, 100, 200, 300);

    // 尺寸大小
//    QSize s1(80, 40);
//    btn1->resize(s1);
//    QSize s2 = {600, 400};
    // this->setFixedSize(s2);

    // 矩形
//    QRect r1(50, 50, 100, 60);
//    btn1->setGeometry(r1);

//    this->setGeometry(QRect(100, 80, 300, 300));

    // 3)字符串
    // Qt提供的字符串有两种：QString  QByteArray
    // 在多数情况下，两种类型可以互相通用，但是有一些情况只能用QByteArray
//    QString str1 = "Hello, 你好";
//    QByteArray str2 = "Hello, 你好";
//    qDebug() << str1;
//    qDebug() << str2;

//    // 有些情况两种类型可以混用
//    QPushButton *btn = new QPushButton;
//    btn->setParent(this);
//    // btn->setText(str1);
//    btn->setText(str2);

//    // QString ---> QByteArray  使用 toUtf8() 方法即可
//    qDebug() << str1.toUtf8();

//    // QByteArray ---> QString  使用QString(QByteArray)
//    qDebug() << QString(str2);

    // 字符串常用的方法：
//    QString str = "aBCdeFcG";
//    qDebug() << str.size() << str.length() << str.count() << str.count("c");
//    qDebug() << str.toLower();
//    qDebug() << str.toUpper();

//    QString str = "Hello";
//    qDebug() << str.append(" World");
//    qDebug() << str;

//    qDebug() <<str.prepend("~~~");
//    qDebug() << str;

//    qDebug() << str.insert(3, "zzz");
//    qDebug() << str;

//    QString str = "   Hello   World  ";
//    qDebug() <<str.trimmed();
//    qDebug() <<str.simplified();

//    QString str = "abcdefcda";
//    qDebug() <<str.indexOf("c") <<str.lastIndexOf("c");
//    qDebug() <<str.indexOf("cd") <<str.lastIndexOf("cd");
//    qDebug() << str.at(3) << str.at(5);
    connect(ui->verBtn, &QPushButton::clicked, [this](){
        // 但凡是用户输入的内容，必须要去掉左右空格
        QString email = this->ui->lineEdit->text().trimmed();
        if(email.count("@") != 1)
        {
            qDebug() << "邮箱格式不合法";
            return ;
        }
        else
        {
//           int index = email.indexOf("@");
//           QString suffix = email.mid(index + 1);
//           qDebug() << suffix;
//           if(suffix != "126.com" && suffix != "qq.com")
//           {
//               qDebug() << "邮箱必须为126或qq邮箱";
//               return ;
//           }
            if(!email.endsWith("@126.com") && !email.endsWith("@qq.com"))
            {
                qDebug() << "邮箱必须为126或qq邮箱";
                return ;
            }
        }
        qDebug() << "邮箱合法";
    });

//    QString str1 = "";
//    QString str2;
//    qDebug() <<str1.isEmpty() << str1.isNull();
//    qDebug() <<str2.isEmpty() << str2.isNull();

//    QString str1 = "abcdefg";
//    QString str2 = "Hello World";
//    qDebug() << str1.contains("o") << str2.contains("o");
//    qDebug() << str1.startsWith("H") << str2.startsWith("H") << str2.startsWith("h");
//    qDebug() << str1.endsWith("g") << str2.endsWith("g");

//    QString str = "abcdefg";
//    qDebug() <<str.replace("cd", "zzz");

//    QString filePath = "/home/zs/desktop";
//    // {"", "home", "zs", "desktop"}
//    qDebug() << filePath.section("/", 1, 2);  // home/zs
//    qDebug() << filePath.section("/", 0, 2);  // /home/zs

//    QString name = "小明";
//    int age = 8;
//    // 大家好，我叫小明，今年8岁
//    qDebug() << "大家好，我叫" + name + "，今年" + QString::number(age) + "岁";
//    qDebug() << QString("大家好，我叫%1，今年%2岁").arg(name).arg(age);

    // 日期和时间
//    QDate d(2008, 8, 15);
//    qDebug() << d << d.toString() << d.toString("yyyy-MM-dd");
//    qDebug() << d.year() << d.month() << d.day();

//    QTime t(10, 20, 33);
//    qDebug() << t << t.toString() << t.toString("hh:mm:ss");
//    qDebug() << t.hour() << t.minute() << t.second();

//    QDateTime dt(d, t);
//    qDebug() << dt << dt.toString() << dt.toString("yyyy-MM-dd hh:mm:ss");
//    qDebug() << dt.date().year();
//    qDebug() << dt.time().hour();

    // 获取当前时间的 年-月-日 时:分:秒
//    QDateTime nowDt = QDateTime::currentDateTime();
//    qDebug() << nowDt.toString("yyyy-MM-dd hh:mm:dd");

//    qDebug() << QDate::currentDate(); // 获取当前的 年-月-日
//    qDebug() << QTime::currentTime(); // 获取当前的 时:分:秒

    // QVariant 能够保存任何类型的数据，也能中途修改
    QVariant a;
    a = 100;
    qDebug() << a  << a.toInt();
    a = "abc";
    qDebug() << a << a.toString();
}

Widget::~Widget()
{
    delete ui;
}
